package com.example.demo.bizhan.classloader;

/**
 * @description: xxx
 * @time: 2020-10-29 20:44
 * @author: baojinlong
 * ClassLoader的loadClass()和Class.forName()方法区别
 * 类加载过程
 * 1) 加载: ClassLoader加载class字节码文件,生成class文件
 * 2) 链接:校验 准备 解析
 * 3) 初始化: 执行类变量的赋值和静态代码块
 * loadClass()仅仅是完成了第一个操作也就加载过程
 * Class.forName()已经初始化完成了
 **/
public class ClassLoaderApp {
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
        PKClassLoader pkClassLoader = new PKClassLoader("e:/zhongyao-code/my-java-learn2/src/main/java/com/example/demo/bizhan/classloader/", "PKDemo");
        Class<?> clazz = pkClassLoader.loadClass("PK");
        // 构建实体
        System.out.println(clazz.newInstance());
        System.out.println(clazz.getClassLoader());
        System.out.println(clazz.getClassLoader().getParent());
        System.out.println(clazz.getClassLoader().getParent().getParent());
        System.out.println(clazz.getClassLoader().getParent().getParent().getParent());

    }
}
